Претрага
Претрага подразумева испитавање да ли у серији постоји неки елемент који задовољава дати услов (на пример, да ли је неки од ученика у одељењу постигао максималан број поена на контролном задатку). Такође, могуће је испитивати да ли сви елементи задовољавају услов, тражити позицију првог или позицију последњег елемента који задовољава или не задовољава дати услов и слично.
Алгоритам претраге се своди на итеративно израчунавање дисјункције
или конјункције. Постоји велика сличност између алгоритма претраге и
алгоритама израчунавања збира, производа, минимума и максимума серије
које смо већ разматрали. На пример, провера да ли је неки од бројева
a1, a2 или a3 негативан се своди
на то да се провери да ли је први број негативан, да ли је други број
негативан и тако даље. Потребно је дакле израчунати вредност логичког
израза
(a1 < 0) || (a2 < 0) || (a3 < 0)Веома слично као и у случају израчунавања збира, производа или
минимума/максимума, резултујућу променљиву постављамо на неутралну
вредност (false у случају
дисјункције тј. true у случају конјункције),
а онда је у сваком кораку ажурирамо применом
одговарајућег оператора.
postoji = false;
postoji = postoji || a1 < 0;
postoji = postoji || a2 < 0;
postoji = postoji || a3 < 0;Даље, може се приметити да ако је услов ai < 0
испуњен, онда вредност променљиве postoji постаје
true а ако није испуњен, онда остаје онаква каква је и била
раније. На основу тога, претходни кôд се може написати у следећем
облику:
postoji = false;
if (a1 < 0) postoji = true;
if (a2 < 0) postoji = true;
if (a3 < 0) postoji = true;Оператор || има лењу семантику тј. у изразу
x || y вредност израза y се не израчунава ако
израз x има вредност true. Зато сваки наредни
услов можемо проверавати само ако претходни није задовољен.
То постижемо тиме што уместо независних провера користимо
конструкцију else-if (илустровану у задатку Агрегатно
стање) и сваки наредни услов проверавамо само ако претходни није
испуњен.
postoji = false;
if (a1 < 0) postoji = true;
else if (a2 < 0) postoji = true;
else if (a3 < 0) postoji = true;Алгоритам линеарне претраге је нарочито значајан код дужих серија, и о њему ће више бити речи у задатку Негативан број.
Претрага
Претрага подразумева испитавање да ли у серији постоји неки елемент који задовољава дати услов (на пример, да ли је неки од ученика у одељењу постигао максималан број поена на контролном задатку). Такође, могуће је испитивати да ли сви елементи задовољавају услов, тражити позицију првог или позицију последњег елемента који задовољава или не задовољава дати услов и слично.
Алгоритам претраге се своди на итеративно израчунавање дисјункције
или конјункције. Постоји велика сличност између алгоритма претраге и
алгоритама израчунавања збира, производа, минимума и максимума серије
које смо већ разматрали. На пример, провера да ли је неки од бројева
a1, a2 или a3 негативан се своди
на то да се провери да ли је први број негативан, да ли је други број
негативан и тако даље. Потребно је дакле израчунати вредност логичког
израза
(a1 < 0) || (a2 < 0) || (a3 < 0)Веома слично као и у случају израчунавања збира, производа или
минимума/максимума, резултујућу променљиву постављамо на неутралну
вредност (false у случају
дисјункције тј. true у случају конјункције),
а онда је у сваком кораку ажурирамо применом
одговарајућег оператора.
postoji = false;
postoji = postoji || a1 < 0;
postoji = postoji || a2 < 0;
postoji = postoji || a3 < 0;Даље, може се приметити да ако је услов ai < 0
испуњен, онда вредност променљиве postoji постаје
true а ако није испуњен, онда остаје онаква каква је и била
раније. На основу тога, претходни кôд се може написати у следећем
облику:
postoji = false;
if (a1 < 0) postoji = true;
if (a2 < 0) postoji = true;
if (a3 < 0) postoji = true;Оператор || има лењу семантику тј. у изразу
x || y вредност израза y се не израчунава ако
израз x има вредност true. Зато сваки наредни
услов можемо проверавати само ако претходни није задовољен.
То постижемо тиме што уместо независних провера користимо
конструкцију else-if (илустровану у задатку Агрегатно
стање) и сваки наредни услов проверавамо само ако претходни није
испуњен.
postoji = false;
if (a1 < 0) postoji = true;
else if (a2 < 0) postoji = true;
else if (a3 < 0) postoji = true;Алгоритам линеарне претраге је нарочито значајан код дужих серија, и о њему ће више бити речи у задатку Негативан број.